from db.sessionData import SessionData
from handlers.myhandler import *

class SessionHandler(MyHandler):
	
	def safeGet(self, user):
		print "processing sessionHandler ajax request..."
		params = self.getAllParametersInDict()
		if not 'method' in params or not params['method'] or params['method']=="read":
			self.response.out.write(json.dumps({
				'status':0,
				'resultType':'',
				'msg':'',
				'data':SessionData.getSessionData(user, **params)
			})) # senza filtri per averle tutte, coi filtri per averne alcune
			return
		elif params['method']== 'write':
			try:
				az,new = SessionData.newSession(user, **params)
				self.response.out.write(json.dumps({
					'status': (new and 0 or 1),
					'resultType':'success',
					'msg':'Sessione '+(new and "creata" or "modificata")+' con successo',
					'data':az
				}))
			except (EndBeforeStartException,ClosedProjectError, NoStartTimeException, NoProjectBounded) as e:
				se = SessionData.getSessionDataByKey(user, params['key'])
				self.sendError(e, str(e), se)
			return
		elif params['method']== 'delete':
			try:
				ok, errors = SessionData.deleteSessionsData(**params)
				if not errors:
					self.response.out.write(json.dumps({
						'status':0,
						'resultType':'success',
						'msg':'Sessioni eliminate con successo',
						'data':{
							'keys': ok,
							'onerror': errors
							}
					}, default=lambda o: o.__dict__))
				elif ok:
					self.response.out.write(json.dumps({
						'status':0,
						'resultType':'warning',
						'msg':'Non &egrave; stato possibile eliminare alcune sessioni',
						'data':{
							'keys': ok,
							'onerror': errors
							}
					}, default=lambda o: o.__dict__))
				else:
					self.response.out.write(json.dumps({
						'status':0,
						'resultType':'error',
						'msg':'Nessuna sessione &egrave; stata eliminata',
						'data':{
							'keys': ok,
							'onerror': errors
							}
					}, default=lambda o: o.__dict__))
			except Exception as e:
				traceback.print_exc()
				print "ECCEZIONE NON PREVISTA?"
				self.sendError(e, 'Si &egrave; verificato un errore!')